以下為參雜CS61B上課內容 + 良葛格聖經 + 網路資源 的讀書筆記
( 寫一份程式碼,就可以在多個平台使用 ) 跨平台、物件導向、強型別的程式語言
所有程式碼都是 .java 純文本文件,由 Javac ( Java compiler ) 編譯器編譯成 .class 文件
是包含 Java 虛擬機 ( Java Virtual Machine ) JVM 的機器語言
最後 java 啟動器使用 JVM 運行程式碼
Java 是靜態語言Static Typing ,變數帶有資料型態static type,這讓 Java 在開發時就會幫你糾正型別的正確與否。反之就是動態語言 《詳細良葛格部落格》
(圖片來源)
// 編寫一支 print HelloWorld 的 Main.java
$ javac Main.java
// 會跑出 Main.class
$ Java Main
//HelloWorls !
雖然語言本身比較囉嗦、寫起來很長、學習曲線也比較高,但協作時會比較好維護。
Exercise 1.1.2. 小練習 FOR、WHILE 迴圈 良葛格
一個函數會有輸入值 input、得到一個輸出值 output
Java 的 API 提供非常多 Function () 、可以提供或不提供 input
很多 .java 的文件可以依據功能不同來做分類管理
現實世界中的物件 object、instance 都有自己的狀態 attribute、行為 behavior
Java Class 是創建單個物件 Object、instance 的藍圖 blueprint
創建物件的過程被稱為實例化 instantiation ,可以透過 new 關鍵字把電腦記憶體分給新的物件
class 都是 reference data type (或 Non-primitive data type)
在 IDEA 會自動標顏色跟你說這個 this 跟誰一起
public class Circle {
private double radius;
public Circle() {
this(1.0);
}
public Circle(double radius) {
this.radius = radius;
}
public double getArea() {
return Math.PI * Math.pow(this.radius, 2);
}
}
Constructor 是用於初始化對象的特殊方法 ( 關鍵字 ),調用構造函數規則為 :
//Circle.java
import static java.lang.Math.*;
public class Circle {
//encapsulation
private double radius;
//Construcuor methods have "method overlooading"
public Circle() {
radius = 1.0;
}
//Circle class's constructor
public Circle(double newRadius) {
radius = newRadius;
}
public double getArea() {
return Math.PI * radius * radius;
}
}
//Test.java
public class WisonTest {
public static void main(String[] args) {
//創建物件起手式
Circle circle1 = new Circle();
//預設會是 0.0
Circle c2 = new Circle();
Circle c3 = new Circle();
System.out.println(c3.getArea());
//Execute scanner class' constructor
Scanner s = new Scanner(System.in);
int x = s.nextInt();
}
};
Intellij IDEA 開始一個專案
new file 選擇 location 檔案名稱首字大寫
程式碼都放在 src 底下 選擇使用的 JDK
右鍵 run Main.java 會 complier 在底下
也會新增 out 資料夾存放 .class 檔案
快捷鍵
pusvm + tab
//----
public class Main {
public static void main(String[] args) {
}
}
sout + tab
//----
System.out.println();ln();
變數 Variable (他就像是一個箱子) 賦值 assignment (把 value 放進去)
Java 的 等號 = 是 assignment 賦值的意思
//基本構造
public class Main {
public static void main(String[] args) {
int x = 5; //variable x data type => integer
int y = 6;
x = x + 1; // 很常見 有語法糖果
x += 1; //語法糖 syntax suggar
System.out.println(x);
}
}
不能改變的量,稱為常量 constants
在 Java 的 variable declaration (宣告) 中加入 final keyword
大家習慣在 constants 會全部大寫英文字母表示
public class Main {
public static void main(String[] args) {
final double PI = 3.14; //variable declaration
PI = 5; // Error : Cannot assign a value to final variable 'PI'
}
}